package com.zpark.merchant.service.convert;

import com.zpark.merchant.api.dto.StaffDTO;
import com.zpark.merchant.api.dto.StoreDTO;
import com.zpark.merchant.service.entity.Staff;
import com.zpark.merchant.service.entity.Store;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 员工对象转换接口
 */
@Mapper
public interface IStaffConvert {

    // 单例模式，用于获取IStaffConvert接口的实现实例
    IStaffConvert INSTANCE = Mappers.getMapper(IStaffConvert.class);

    /**
     * 将工作人员实体转换为DTO。
     *
     * @param staff 工作人员实体
     * @return 转换后的工作人员DTO
     */
    StaffDTO entityToDto(Staff staff);

    /**
     * 将工作人员DTO转换为实体。
     *
     * @param storeDTO 工作人员DTO
     * @return 转换后的工作人员实体
     */
    Staff dtoToEntity(StaffDTO storeDTO);

    /**
     * 将工作人员实体列表转换为DTO列表。
     *
     * @param staffs 工作人员实体列表
     * @return 转换后的工作人员DTO列表
     */
    List<StaffDTO> listEntityToListDto(List<Staff> staffs);

    /**
     * 将工作人员DTO列表转换为实体列表。
     *
     * @param storeDTOs 工作人员DTO列表
     * @return 转换后的工作人员实体列表
     */
    List<Staff> listDtoToListEntity(List<StaffDTO> storeDTOs);
}
